import { Controller, Get, Header, Res } from '@nestjs/common';
import { Response } from 'express';
import { SeoService } from './seo.service';
import { ConfigService } from '@nestjs/config';

/**
 * SEO 控制器
 * 提供 sitemap.xml 等 SEO 相关接口
 */
@Controller()
export class SeoController {
  private baseUrl: string;

  constructor(
    private readonly seoService: SeoService,
    private readonly configService: ConfigService,
  ) {
    // 从环境变量获取网站基础 URL
    this.baseUrl = this.configService.get<string>('SITE_URL') || 'http://localhost:3000';
  }

  /**
   * 生成并返回 sitemap.xml
   * 访问路径: /sitemap.xml
   */
  @Get('sitemap.xml')
  @Header('Content-Type', 'application/xml')
  async getSitemap(@Res() res: Response) {
    console.log('🗺️ 生成 sitemap.xml...');
    
    try {
      const sitemap = await this.seoService.generateSitemap(this.baseUrl);
      console.log('✅ sitemap.xml 生成成功');
      
      res.send(sitemap);
    } catch (error) {
      console.error('❌ sitemap.xml 生成失败:', error);
      res.status(500).send('<?xml version="1.0" encoding="UTF-8"?><error>Failed to generate sitemap</error>');
    }
  }

  /**
   * 返回 robots.txt（备用方案）
   * 访问路径: /api/robots.txt
   */
  @Get('api/robots.txt')
  @Header('Content-Type', 'text/plain')
  getRobotsTxt(): string {
    console.log('🤖 生成 robots.txt...');
    return this.seoService.generateRobotsTxt(this.baseUrl);
  }
}

